module sw.wiki.dat;
version(Wiki):
import std.string, std.stdio, nazo.file, std.uri, nazo.date, sw.utils;

///swのdatの基礎クラス
class Dat{
  public{
    ///ファイル名に使えない文字をエスケープされた名前(拡張子は付かない)
    string fileName;
    ///パス
    string path;
    ///時刻
    string time;
    bool isExist(){
      if(exists(path))
        if(isfile(path))
          return true;
      return false;
    }
    static string getFileName(string title,string time=""){
      return "dat/"~title~(time==""?"":"."~time)~".dat";
    }
    ///コンストラクタ
    this(string name,string time=""){
      this.time=time;
      this.fileName=titleToFileName(name);
      this.path=getFileName(this.fileName,time);
      if(!exists("dat")){
        mkdir("dat");
      }
    }
    ///読み込み(ファイルが無い時は空文字列を返す)
    string read(){
      if(!this.isExist()){
        return "";
      }
      return cast(string).read(path);
    }
    ///削除
    void remove(){
      if(!this.isExist()){
        return;
      }
      std.file.remove(path);
    }
    ///書き込み
    void write(string data){
      nazo.file.write(path,data);
    }
  }
}
